package com.aliyun.sms.sdk.handler;

import com.aliyun.sms.sdk.domain.NoticeData;
import com.aliyun.sms.sdk.domain.QuerySendDetailData;
import com.aliyun.sms.sdk.domain.SendBatchSmsData;
import com.aliyuncs.dysmsapi.model.v20170525.QuerySendDetailsResponse;
import com.aliyuncs.dysmsapi.model.v20170525.SendBatchSmsResponse;
import com.aliyuncs.dysmsapi.model.v20170525.SendSmsResponse;

import java.util.Collection;


/**
 * @author sxjy
 * @Date: 2021/1/12 15:57
 * @Description: 发送处理
 */
public interface SendHandler {


    /**************************************发送消息******************************************/
    /**
     * 发送通知
     *
     * @param noticeData 通知内容
     * @param phones     手机号列表
     * @return 是否成功
     */
    SendSmsResponse send(NoticeData noticeData, Collection<String> phones);

    /**
     * 发送通知
     *
     * @param noticeData 通知内容
     * @param phone     手机号列表
     * @return 是否成功
     */
    SendSmsResponse send(NoticeData noticeData, String phone);

    /**
     * 发送通知
     *
     * @param noticeData 通知内容
     * @param phones     手机号列表
     * @return 是否成功
     */
    SendSmsResponse send(NoticeData noticeData, String... phones);


    /**
     * 批量发送通知
     *
     * @param sendBatchSmsData 通知内容
     * @return 是否成功
     */
    SendBatchSmsResponse sendBatch(SendBatchSmsData sendBatchSmsData);


    /**************************************查询已发送短信******************************************/

    /**
     * 调用QuerySendDetails接口查看短信发送记录和发送状态。
     *
     * 通过调用QuerySendDetails接口，可以根据短信发送日期查看发送记录和短信内容，也可以添加发送流水号，根据流水号查询指定日期指定请求的发送详情。
     *
     * 如果指定日期短信发送量较大，可以分页查看。指定每页显示的短信详情数量和查看的页数，即可分页查看发送记录。
     * @param querySendDetailData 内容
     * @return 结果
     */
    QuerySendDetailsResponse querySendDetails(QuerySendDetailData querySendDetailData);




}
